/*
 * direccionamiento.c
 *
 *  Created on: 03/10/2011
 *      Author: utn_so
 */

#include "main.h"

int32_t obtenerPrimerSectorDataRegion ()
{
	int32_t primerSectorData;
	extern stBootSector sectorBoot;
	primerSectorData = sectorBoot.BPB_RsvdSecCnt + sectorBoot.BPB_NumFATs * sectorBoot.BPB_FATSz32;

	return primerSectorData;
}

int32_t obtenerPrimerSectorDeUnCluster (int32_t nroCluster)
{
	int32_t iPrimerSectorDelCluster,primerSectorDataRegion;
	extern stBootSector sectorBoot;
	primerSectorDataRegion = obtenerPrimerSectorDataRegion();
	iPrimerSectorDelCluster = ( (nroCluster - sectorBoot.BPB_RootClus)*sectorBoot.BPB_SecPerClus) + primerSectorDataRegion;

	return iPrimerSectorDelCluster;
}

int32_t *deClusterASectores (int32_t nroCluster)
{
	int32_t *sectoresDelCluster;
	int32_t i=0;
	int32_t primerSector;
	extern stBootSector sectorBoot;

	sectoresDelCluster = (int32_t *)malloc(sectorBoot.BPB_SecPerClus*sizeof(int32_t));
	primerSector = obtenerPrimerSectorDeUnCluster (nroCluster);
	while (i<sectorBoot.BPB_SecPerClus)
	{
		sectoresDelCluster[i] = primerSector + i;
		i++;
	}
	return sectoresDelCluster;
}

int32_t deSectorACluster (int32_t nroSector)
{
	int32_t cluster;
	int32_t primerSectorDataRegion;
	primerSectorDataRegion = obtenerPrimerSectorDataRegion();

	extern stBootSector sectorBoot;
	cluster = ((nroSector - primerSectorDataRegion)/ sectorBoot.BPB_SecPerClus) + sectorBoot.BPB_RootEntCnt;
	return cluster;
}

int32_t enviarPeticionesDeSector(int32_t *vecSectores,int32_t socketConexion)
{

	return 0;
}
